home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 004 / astr0106.arc / ASTRO101.BAS next >
BASIC Source File  |  1986-03-02  |  8KB  |  214 lines

  1. 10 REM Written by
  2. 20 REM Lee Roger Taylor, Jr.
  3. 30 REM 4002 Madison Drive
  4. 40 REM Rock Springs, Wyoming  82901
  5. 50 REM 307-382-3878
  6. 60 DEFDBL Q
  7. 70 DEFDBL W
  8. 80 W=6.6460656#
  9. 90 DEFDBL Z
  10. 100 Z=2400.051262#
  11. 110 Q=2.581E-05
  12. 120 DEF FNRAD(X)=X*1.745329E-02
  13. 130 KEY OFF
  14. 140 DEF FNARCSIN(X)=ATN(X/SQR(1-X^2))
  15. 150 DEF FNDEG(X)=X*57.29577
  16. 160 DEF FNARCCOS(X)=1.570796-ATN(X/SQR(1-X^2))
  17. 170 CLS:LOCATE 3,22:PRINT STRING$(35,32)
  18. 180 LOCATE 4,22:PRINT STRING$(35,32)
  19. 190 LOCATE 5,22:PRINT STRING$(35,32)
  20. 200 LOCATE 6,22:PRINT STRING$(35,32)
  21. 210 LOCATE 7,22:PRINT STRING$(35,32)
  22. 220 LOCATE 8,22:PRINT STRING$(35,22)
  23. 230 LOCATE 4,23:PRINT "EQUATORIAL TO HORIZON COORDINATES"
  24. 240 LOCATE 5,27:PRINT "This Program will convert"
  25. 250 LOCATE 6,27:PRINT "Equatorial Coordinates to"
  26. 260 LOCATE 7,30:PRINT "Horizon Coordinates"
  27. 270 LOCATE 15,7:INPUT "Do You want a Printout? (Y/N): ",DISPLAY$
  28. 280 LOCATE 22,7:PRINT "Press any key to continue":IF INKEY$="" THEN 280
  29. 290 GOSUB 820
  30. 300 GOSUB 1260
  31. 310 GOSUB 1910
  32. 320 GOSUB 1320
  33. 330 GOSUB 1410
  34. 340 CLS:LOCATE 6,5:PRINT "RIGHT ASCENSION OF OBJECT:"
  35. 350 LOCATE 8,15:PRINT "Hours (##): "
  36. 360 LOCATE 8,27:INPUT "",HR
  37. 370 LOCATE 10,15:PRINT "Minutes (##):"
  38. 380 LOCATE 10,29:INPUT "",MIN
  39. 390 LOCATE 12,15:PRINT "Seconds (##): "
  40. 400 LOCATE 12,29:INPUT "",SEC
  41. 410 HR$=STR$(HR):MIN$=STR$(MIN):SEC$=STR$(SEC)
  42. 420 RIGHTASCENSION$=HR$+":"+MIN$+":"+SEC$
  43. 430 HR#=((MIN+(SEC/60))/60)+HR
  44. 440 RIGHTASCEN#=HR#
  45. 450 HOURANGLE#=LST#-RIGHTASCEN#
  46. 460 IF HOURANGLE#<0 THEN HOURANGLE#=HOURANGLE#+24
  47. 470 CLS:LOCATE 6,5:PRINT "DECLINATION OF OBJECT: "
  48. 480 LOCATE 8,15:PRINT "Degrees (##): "
  49. 490 LOCATE 8,29:INPUT "",HR
  50. 500 LOCATE 10,15:PRINT "Minutes (##): "
  51. 510 LOCATE 10,29:INPUT "",MIN
  52. 520 LOCATE 12,15:PRINT "Seconds (##): "
  53. 530 LOCATE 12,29:INPUT "",SEC
  54. 540 HR$=STR$(HR):MIN$=STR$(MIN):SEC$=STR$(SEC)
  55. 550 DECLINA$=HR$+":"+MIN$+":"+SEC$
  56. 560 HR#=((MIN+(SEC/60))/60)+HR
  57. 570 DECLINATION#=HR#
  58. 580 HOURDEG#=HOURANGLE#*15
  59. 590 DECLINATION#=FNRAD(DECLINATION#):PHI#=FNRAD(PHI#):H#=FNRAD(HOURDEG#)
  60. 600 ALTA#=(SIN(DECLINATION#)*SIN(PHI#))+(COS(DECLINATION#)*COS(PHI#)*COS(H#))
  61. 610 ALTA#=FNARCSIN(ALTA#)
  62. 620 ALTITUDE#=FNDEG(ALTA#)
  63. 630 '
  64. 640 AZIMUTH3#=(SIN(DECLINATION#)-(SIN(PHI#)*SIN(ALTA#)))/(COS(PHI#)*COS(ALTA#))
  65. 650 AZIMUTH2#=FNARCCOS(AZIMUTH3#)
  66. 660 AZIMUTH#=FNDEG(AZIMUTH2#)
  67. 670 TEST#=SIN(H#)
  68. 680 TEST#=FNDEG(TEST#)
  69. 690 IF TEST#=>0 THEN AZIMUTH#=360-AZIMUTH#
  70. 700 CLS
  71. 710 IF DISPLAY$="Y" THEN GOSUB 1680
  72. 720 LOCATE 5,10:PRINT "The Coordinates you gave should put the Object at the following"
  73. 730 LOCATE 6,29:PRINT "Horizon Coordinates"
  74. 740 LOCATE 8,45:PRINT "Right Ascension:  ";RIGHTASCENSION$
  75. 750 LOCATE 9,45:PRINT "Declination:      ";DECLINA$
  76. 760 LOCATE 8,5:PRINT "Date of Position: ";DAT$
  77. 770 GOSUB 1530
  78. 780 LOCATE 11,7:PRINT "Time of Observation: "TIM$;AP$
  79. 790 LOCATE 20,5:INPUT "Do you want another? (Y/N) ",QUE$
  80. 800 IF QUE$="Y" THEN 10 ELSE 810
  81. 810 END
  82. 820 'TIME AND DATE ROUTINE
  83. 830 CLS:LOCATE 6,7:PRINT "What is the TIME of OBSERVATION?"
  84. 840 LOCATE 8,10:PRINT "What is the HOUR (1-12): "
  85. 850 LOCATE 8,35:INPUT "",HR
  86. 860 LOCATE 10,10:PRINT "What are the MINUTES (##): "
  87. 870 LOCATE 10,37:INPUT "",MIN
  88. 880 LOCATE 12,10:PRINT "What are the SECONDS (##): "
  89. 890 LOCATE 12,37:INPUT "",SEC
  90. 900 HR$=STR$(HR):MIN$=STR$(MIN):SEC$=STR$(SEC)
  91. 910 TIM$=HR$+":"+MIN$+":"+SEC$
  92. 920 LOCATE 14,10:INPUT "Is Daylight Savings Time in effect? (Y/N) ",QUE$
  93. 930 IF QUE$="Y" THEN HR=HR-1
  94. 940 HR#=((MIN+(SEC/60))/60)+HR
  95. 950 HRD#=HR#
  96. 960 LOCATE 16,10:INPUT "IS IT AM OR PM? (A/P) ",AP$
  97. 970 IF AP$="P" THEN HRD#=HRD#+12
  98. 980 CLS:LOCATE 6,10:PRINT "DATE INFORMATION"
  99. 990 LOCATE 8,15:PRINT "MONTH (##): "
  100. 1000 LOCATE 8,27:INPUT "",MM
  101. 1010 LOCATE 10,15:PRINT "DATE (##): "
  102. 1020 LOCATE 10,26:INPUT "",DD
  103. 1030 LOCATE 12,15:PRINT "YEAR (####): "
  104. 1040 LOCATE 12,28:INPUT "",YEAR
  105. 1050 MM$=STR$(MM):DD$=STR$(DD):YEAR$=STR$(YEAR)
  106. 1060 DAT$=MM$+"/"+DD$+"/"+YEAR$
  107. 1070 UT%=MM
  108. 1080 RETURN
  109. 1090 'COMPUTATION FOR SPS
  110. 1100 D8%=INT(DD):F8#=D8%-DD-.5
  111. 1110 J8%=-INT(7*(INT((UT%+9)/12)+YEAR)/4)
  112. 1120 S8=SGN(UT%-9):A8=ABS(UT%-9)
  113. 1130 J9%=INT(YEAR+S8*INT(A8/7))
  114. 1140 J9%=-INT((INT(J9%/100)+1)*3/4)
  115. 1150 J8%=J8%+INT(275*UT%/9)+D8%+1*J9%
  116. 1160 JD#=J8%+(52152.33*33)+2*1+367*YEAR
  117. 1170 IF F8#>=0 THEN GOTO 1190
  118. 1180 F8#=F8#+1:JD#=JD#-1
  119. 1190 J9#=JD#+F8#-DAYS%+1
  120. 1200 S5#=J9#-(200*12075.1)
  121. 1210 T5#=S5#/(365.25*100)
  122. 1220 R8#=W+(Z*T5#)+(2.581E-05*T5#^2)
  123. 1230 SPS1#=R8#-(24*(YEAR-1900))
  124. 1240 SPS#=24-SPS1#
  125. 1250 RETURN
  126. 1260 'DATE COMPUTATION
  127. 1270 IF MM<2 THEN MM#=(((MM-1)*63)/2)
  128. 1280 IF MM>1 THEN MM#=(((MM+1)*30.6)-63)
  129. 1290 DAYS=MM#+DD+1
  130. 1300 DAYS%=INT(DAYS)
  131. 1310 RETURN
  132. 1320 'LOCATION INFORMATION
  133. 1330 CLS
  134. 1340 LOCATE 10,7:PRINT "What is the longitude? "
  135. 1350 LOCATE 10,30:INPUT "",LONGITUDE#
  136. 1360 LOCATE 12,7:PRINT "What is the Time Zone Correction? "
  137. 1370 LOCATE 12,41:INPUT "",TIMEZONE#
  138. 1380 LOCATE 14,7:PRINT "What is the Latitude? "
  139. 1390 LOCATE 14,29:INPUT "",PHI#
  140. 1400 RETURN
  141. 1410 'GMT COMPUTATION
  142. 1420 GMT#=HRD#-TIMEZONE#
  143. 1430 IF GMT#>24 THEN GMT#=GMT#-24
  144. 1440 IF GMT#<0 THEN GMT#=GMT#+24
  145. 1450 GST#=((DAYS%*.0657098)-SPS#)+(GMT#*1.002738)
  146. 1460 IF GST#>24 THEN GST#=GST#-24
  147. 1470 IF GST#<0 THEN GST#=GST#+24
  148. 1480 LONGITUDIFF#=LONGITUDE#/15
  149. 1490 LST#=GST#-LONGITUDIFF#
  150. 1500 IF LST#>24 THEN LST#=LST#-24
  151. 1510 IF LST#<0 THEN LST#=LST#+24
  152. 1520 RETURN
  153. 1530 'PRINTOUT CONVERSION FORMULA
  154. 1540 IF N=1 THEN X#=AZIMUTH#
  155. 1550 IF N=0 THEN X#=ALTITUDE#
  156. 1560 XT%=INT(X#):XA#=X#-XT%
  157. 1570 A#=XA#*60:B%=INT(A#):C#=A#-B%:D#=C#*60:E%=INT(D#+.5)
  158. 1580 IF E%=60 THEN B%=B%+1:E%=0
  159. 1590 IF B%=60 THEN XT%=XT%+1:B%=0
  160. 1600 IF N=1 THEN GOTO 1620
  161. 1610 LOCATE 13,5:PRINT USING "ALTITUDE     ## Degrees   ## Minutes   ## Seconds";XT%,B%,E%:GOTO 1630
  162. 1620 LOCATE 14,5:PRINT USING "AZIMUTH     ### Degrees   ## Minutes   ## Seconds";XT%,B%,E%
  163. 1630 N=N+1
  164. 1640 IF N<2 THEN GOTO 1540
  165. 1650 N=0
  166. 1660 RETURN
  167. 1670 RETURN
  168. 1680 'PRINTER OUTPUT
  169. 1690 LPRINT CHR$(12);:LPRINT :LPRINT :LPRINT
  170. 1700 LPRINT CHR$(14) TAB(1);"Equatorial to Horizon Coordinates"
  171. 1710 LPRINT:LPRINT:LPRINT
  172. 1720 LPRINT TAB(2)DAT$ TAB(20)TIM$ TAB(38)RIGHTASCENSION$ TAB(52)DECLINA$
  173. 1730 LPRINT STRING$(80,196)
  174. 1740 LPRINT:LPRINT
  175. 1750 IF N=1 THEN X#=AZIMUTH#
  176. 1760 IF N=0 THEN X#=ALTITUDE#
  177. 1770 XT%=INT(X#):XA#=X#-XT%
  178. 1780 A#=XA#*60:B%=INT(A#):C#=A#-B%:D#=C#*60:E%=INT(D#+.5)
  179. 1790 IF E%=60 THEN B%=B%+1:E%=0
  180. 1800 IF B%=60 THEN XT%=XT%+1:B%=0
  181. 1810 IF N=1 THEN GOTO 1830
  182. 1820 LPRINT USING "     ALTITUDE:    ## Degrees   ## Minutes   ## Seconds";XT%,B%,E%:GOTO 1840
  183. 1830 LPRINT USING "     AZIMUTH:    ### Degrees   ## Minutes   ## Seconds";XT%,B%,E%
  184. 1840 N=N+1
  185. 1850 IF N<2 THEN GOTO 1750
  186. 1860 N=0
  187. 1870 LPRINT:LPRINT:LPRINT:LPRINT:LPRINT
  188. 1880 LPRINT STRING$(80,196)
  189. 1890 LPRINT CHR$(12);
  190. 1900 RETURN
  191. 1910 IF YEAR=1975 THEN SPS#=17.39761
  192. 1920 IF YEAR=1976 THEN SPS#=17.413525#
  193. 1930 IF YEAR=1977 THEN SPS#=17.36373
  194. 1940 IF YEAR=1978 THEN SPS#=17.379643#
  195. 1950 IF YEAR=1979 THEN SPS#=17.395558#
  196. 1960 IF YEAR=1980 THEN SPS#=17.411472#
  197. 1970 IF YEAR=1981 THEN SPS#=17.361677#
  198. 1980 IF YEAR=1982 THEN SPS#=17.377592#
  199. 1990 IF YEAR=1983 THEN SPS#=17.393506#
  200. 2000 IF YEAR=1984 THEN SPS#=17.409421#
  201. 2010 IF YEAR=1985 THEN SPS#=17.359625#
  202. 2020 IF YEAR=1986 THEN SPS#=17.375539#
  203. 2030 IF YEAR=1987 THEN SPS#=17.391453#
  204. 2040 IF YEAR=1988 THEN SPS#=17.407368#
  205. 2050 IF YEAR=1989 THEN SPS#=17.357573#
  206. 2060 IF YEAR=1990 THEN SPS#=17.373487#
  207. 2070 IF YEAR=1991 THEN SPS#=17.389402#
  208. 2080 IF YEAR=1992 THEN SPS#=17.405316#
  209. 2090 IF YEAR=1993 THEN SPS#=17.355521#
  210. 2100 IF YEAR=1994 THEN SPS#=17.371435#
  211. 2110 IF YEAR=1995 THEN SPS#=17.387349#
  212. 2120 IF YEAR=1996 THEN SPS#=17.403263#
  213. 2130 RETURN
  214. F YEAR=1994 THEN SPS#=17.3714